package org.basic.mail.service;


import org.basic.common.mybatis.core.page.TableDataInfo;
import org.basic.common.mybatis.core.page.PageQuery;
import org.basic.mail.domain.bo.SysMailTemplateBo;
import org.basic.mail.domain.bo.SysMailTemplateDialogBo;
import org.basic.mail.domain.vo.MailTemplateRespVo;
import org.basic.mail.domain.vo.MailTemplateSendReqVo;
import org.basic.mail.domain.vo.SysMailTemplateVo;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 邮件模版Service接口
 *
 * @author Shao Hua
 * @date 2023-07-27
 */
public interface ISysMailTemplateService {

    /**
     * 查询邮件模版
     */
    MailTemplateRespVo queryById(Long id);

    /**
     * 查询邮件模版列表
     */
    TableDataInfo<SysMailTemplateVo> queryPageList(SysMailTemplateBo bo, PageQuery pageQuery);

    /**
     * 查询邮件模版列表
     */
    List<SysMailTemplateVo> queryList(SysMailTemplateBo bo);

    /**
     * 新增邮件模版
     */
    Boolean insertByBo(SysMailTemplateDialogBo bo);

    /**
     * 修改邮件模版
     */
    Boolean updateByBo(SysMailTemplateDialogBo bo);

    /**
     * 校验并批量删除邮件模版信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 发送邮件
     * @param sendReqVO
     */
    String sendMail(MailTemplateSendReqVo sendReqVO);

    /**
     * 邮件模版内容合成
     *
     * @param content 邮件模版
     * @param params 合成参数
     * @return 格式化后的内容
     */
    String formatMailTemplateContent(String content, Map<String, Object> params);
}
